/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.far.aus.adm;

import com.far.aus.adm.clas.Auspicio;
import com.far.lib.BaseDatos;
import com.far.lib.Correo;
import com.far.lib.Fecha;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Jorge
 */
public class FrmAuspicioConfirmar extends HttpServlet {

    private String _ip = null;
    private int _puerto = 1433;
    private String _db = null;
    private String _usuario = null;
    private String _clave = null;
    private String _dir = null;
    
    private String depr_ip = null;
    private int depr_puerto = 1433;
    private String depr_db = null;
    private String depr_usuario = null;
    private String depr_clave = null;
    
    private String _SVR_MAIL = null;
    private int _fxp = 50;
    BaseDatos objDB = null;

    public void init(ServletConfig config) throws ServletException
    {
        this._ip = config.getServletContext().getInitParameter("_IP");
        this._puerto = Integer.parseInt(config.getServletContext().getInitParameter("_PUERTO"));
        this._db = config.getServletContext().getInitParameter("_DB");
        this._usuario = config.getServletContext().getInitParameter("_USUARIO");
        this._clave = config.getServletContext().getInitParameter("_CLAVE");
        
        this.depr_ip = config.getServletContext().getInitParameter("DEPR_IP");
        this.depr_puerto = Integer.parseInt(config.getServletContext().getInitParameter("DEPR_PUERTO"));
        this.depr_db = config.getServletContext().getInitParameter("DEPR_DB");
        this.depr_usuario = config.getServletContext().getInitParameter("DEPR_USUARIO");
        this.depr_clave = config.getServletContext().getInitParameter("DEPR_CLAVE");
        
        this._dir = config.getServletContext().getInitParameter("_DIR");
        this._SVR_MAIL = config.getServletContext().getInitParameter("_SVR_MAIL");
        this._fxp = Integer.parseInt(config.getServletContext().getInitParameter("_PAGINACION"));
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession sesion = request.getSession(true);
        String usuario_sesion = (String)sesion.getAttribute("usuario");
        String email_usuario_sesion = (String)sesion.getAttribute("email");
        String empleado = (String)sesion.getAttribute("empleado");
        
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "Mon, 01 Jan 2001 00:00:01 GMT");
        response.setHeader("Cache-Control", "no-store");
        response.setHeader("Cache-Control", "must-revalidate");
        response.setHeader("Cache-Control", "no-cache");
        PrintWriter out = response.getWriter();
        
        String WHERE = request.getParameter("WHERE");
        String p = request.getParameter("p") != null ? request.getParameter("p") : "0";

        String num_auspicio = request.getParameter("ids");
	String mails_destino = request.getParameter("ml");
	
        
        String res = "msg»Error desconocido. Por favor vuelva a intentarlo mas tarde";
        
        Auspicio objAuspicio = new Auspicio(this._ip, this._puerto, this._db, this._usuario, this._clave);
        this.objDB = new BaseDatos(this.depr_ip, this.depr_puerto, this.depr_db, this.depr_usuario, this.depr_clave);

        if(objAuspicio.confirmar(num_auspicio, "m", usuario_sesion)){
            String fecha_creacion = "";
            String ruc_prov = "";
            String proveedor = "";
            String monto = "";
            try{
                ResultSet rs = objAuspicio.getAuspicio(num_auspicio);
                if(rs.next()){
                    fecha_creacion = rs.getString("txt_fecha_creacion")!=null ? rs.getString("txt_fecha_creacion") : "";
                    ruc_prov = rs.getString("ruc")!=null ? rs.getString("ruc") : "";
                    proveedor = rs.getString("proveedor")!=null ? rs.getString("proveedor") : "";
                    monto = rs.getString("total")!=null ? rs.getString("total") : "";
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            

            String archivoPdf = this._dir + "Auspicio_Nro_" + num_auspicio + ".pdf";

            StringBuilder mensaje = new StringBuilder();
            mensaje.append("<p>Estimados</p>");
            mensaje.append("<p>Por medio de la presente pongo a consideraci&oacute;n que se ha generado el Formulario de Auspicio Nro. ");
            mensaje.append(num_auspicio);
            mensaje.append("; del Laboratorio ");
            mensaje.append(proveedor);
            mensaje.append(", con fecha ");
            mensaje.append(fecha_creacion);
            mensaje.append(", se adjunta documento.</p>");
            mensaje.append("<p>Particular para los fines pertinentes.</p>");
            mensaje.append("<p>Atentamente</p>");
            mensaje.append("<p>&nbsp;</p><p>");
            mensaje.append(empleado);
            mensaje.append("<br/>FARMAENLACE CIA LTDA</p>");

            List adjuntos = new ArrayList();
            adjuntos.add(archivoPdf);
            
            if(Correo.enviar(this._SVR_MAIL, email_usuario_sesion, mails_destino, email_usuario_sesion, "", 
                    "Formulario de auspicio Nro " + num_auspicio, mensaje, true, adjuntos)){
                res = "msg»Auspicio confirmado satisfactoriamente";
                /*try{
                    ResultSet rsUs = this.objDB.consulta("select * from USUARIOS with (nolock) where LOGIN='"+usuario_sesion+"'");
                    if(this.objDB.getFilas(rsUs)>0){
                        String codigo_usuario = "";
                        if(rsUs.next()){
                            codigo_usuario = rsUs.getString("codigo_usuario")!=null ? rsUs.getString("codigo_usuario") : "0";
                        }                   

                        String sec = this.getSecFactura();
                        List sql = new ArrayList();
                        sql.add("insert into FACTURAS(NUM_FACTURA, NUMERO_IDPROVEEDOR, FECHA, CODIGO_USUARIO, MOVIMIENTO, difTotal, mes, PENDIENTE, SALDO_KARDEX, FECHASIS, FECHASOLUCIONINC) "
                                + "values('AU"+sec+"', '"+ruc_prov+"', getdate(), '"+codigo_usuario+"', -1, "+monto+", 'MES', 'S', "+monto+", getdate(), '1990/01/01');");

                        sql.add("insert into KARDEXLABORATORIOS(CODKARDEX, FECHA, ENTRADA, SALIDA, SALDOS, DESCRIPCION, NUM_DOCUMENTO, TIPO_DOCUMENTO, NUM_FACTURA, NUMERO_IDPROVEEDOR, CODIGO_USUARIO) "
                                + "values('"+sec+"', getdate(), '"+monto+"', 0, "+monto+", 'GENERADO POR AUSPICIOS - FORMULARIO DE AUSPICIO NUMERO: "+num_auspicio+
                                "', 'AU"+sec+"', 'AU', 'AU"+sec+"', '"+ruc_prov+"', '"+codigo_usuario+"');");
    
////////////////////////////// falta enviar db
                        res = "tbl»"+objAuspicio.paginarJSON("vta_auspicio", "num_auspicio as id_auspicio,txt_fecha_creacion,num_auspicio,tipo_plan,proveedor,total,adjunto", WHERE, Integer.parseInt(p), this._fxp)+
                        "^id»-1^fun»_R('vta1');_R('bloq_vta1');aus_auspicio_editar('"+num_auspicio+"');^msg»Confirmación de auspicio y registro en el CDP realizada satisfactoriamente.";
                    }
                }catch(Exception e){
                    e.printStackTrace();
                }*/
            }else{
                objAuspicio.anular_confirmar(num_auspicio);
                res = "msg»No se han podido enviar el/los correos a los destinatarios.";
            }
        }else{
            res = "msg»" + objAuspicio.getError();
        }

        try{
            out.print(res);
        }finally {
            this.objDB.cerrar();
            objAuspicio.cerrar();
            out.close();
        }
    }
    
    public String getSecFactura()
    {
        String sec = "0";
        try{
            ResultSet rs = this.objDB.consulta("select max( convert(numeric, CODKARDEX) ) + 1 from KARDEXLABORATORIOS");
            if(rs.next()){
                sec = rs.getString(1)!=null ? rs.getString(1) : "0";
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return sec;
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
